package com.hyt.it.ogt.ykcj.mapper.grade;

import java.util.Date;
import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.hyt.it.ogt.ykcj.domain.grade.ServantExamineeInfo;
import com.hyt.it.ogt.ykcj.domain.vo.ExamScoreLineReq;
import com.hyt.it.ogt.ykcj.domain.vo.HistoryExamReq;
import com.hyt.it.ogt.ykcj.domain.vo.HistoryScoreLineVo;
import com.hyt.it.ogt.ykcj.domain.vo.InterviewRank;
import com.hyt.it.ogt.ykcj.domain.vo.InterviewVo;
import com.hyt.it.ogt.ykcj.domain.vo.ServantExamineeInfoVo;

/**
 * 公务员考生信息Mapper接口
 *
 * @author admin
 * @date 2021-09-09
 */
public interface ServantExamineeInfoMapper {
    /**
     * 查询公务员考生信息
     *
     * @param id 公务员考生信息ID
     * @return 公务员考生信息
     */
    public ServantExamineeInfo selectServantExamineeInfoById(String id);

    /**
     * 批量查找考生信息
     * @param id
     * @return
     */
    public List<ServantExamineeInfo> selectServantExamineeInfoByIds(List<String> id);


    /**
     * 查询公务员考生信息数量
     *
     * @param servantExamineeInfo 公务员考生信息
     * @return 公务员考生信息集合
     */
    Integer selectServantExamineeInfoCount(ServantExamineeInfo servantExamineeInfo);


    /**
     * 查询公务员考生信息列表
     *
     * @param servantExamineeInfo 公务员考生信息
     * @return 公务员考生信息集合
     */
    public List<ServantExamineeInfo> selectServantExamineeInfoList(ServantExamineeInfo servantExamineeInfo);

    /**
     * 新增公务员考生信息
     *
     * @param servantExamineeInfo 公务员考生信息
     * @return 结果
     */
    public int insertServantExamineeInfo(ServantExamineeInfo servantExamineeInfo);

    /**
     * 修改公务员考生信息
     *
     * @param servantExamineeInfo 公务员考生信息
     * @return 结果
     */
    public int updateServantExamineeInfo(ServantExamineeInfo servantExamineeInfo);


    /**
     *批量更新面试状态
     */
    public void batchUpdateInterviewStatus(List<ServantExamineeInfo> list);

    /**
     *批量更新合格状态
     */
    public void batchUpdateQualifiedStatus(List<ServantExamineeInfo> list);


    /**
     * 删除公务员考生信息
     *
     * @param id 公务员考生信息ID
     * @return 结果
     */
    public int deleteServantExamineeInfoById(String id);

    /**
     * 批量删除公务员考生信息
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    public int deleteServantExamineeInfoByIds(String[] ids);

    /**
     * 删除公务员考生信息及成绩数据
     *
     * @param id 考生信息ID
     * @param subjectId 科目ID
     * @param isDel 是否考生信息（D：删除，N：不删）
     * @return 结果
     */
    Integer deleteExamineeGradeById(@Param("id") String id, @Param("subjectId") String subjectId, @Param("isDel") String isDel);

    /**
     * 新增或更新公务员考生信息
     * @param servantExamineeInfo 公务员考生信息
     * @return 结果
     */
    int insertOrUpdateServantExamineeInfo(ServantExamineeInfo servantExamineeInfo);

    /**
     * 批量插入公务员考生信息
     * @param list
     */
    void insertBatchServantExamineeInfo(List<ServantExamineeInfo>  list);

    /**
     * 获取公务员考生成绩信息分页列表
     * @param servantExamineeInfoVo 公务员考生信息
     * @return 公务员考生信息集合
     */
    List<ServantExamineeInfoVo> selectExamineeGradePage(ServantExamineeInfoVo servantExamineeInfoVo);

    /**
     * 获取公务员考生成绩信息列表
     * @param servantExamineeInfoVo 公务员考生成绩信息
     * @return 结果
     */
    List<ServantExamineeInfoVo> selectExamineeGradeList(ServantExamineeInfoVo servantExamineeInfoVo);

    /**
     * 获取已存在公务员考生信息
     * @param examId 考试ID
     * @return 结果
     */
    List<ServantExamineeInfoVo> selectExistingExamineeGradeList(@Param("examId") String examId);

    /**
     * 更新公务员考生归档状态（单ID操作）
     * @param archivedStatus 归档状态
     * @param archivedDate 归档时间
     * @param examId 考试ID
     * @param id 考生ID
     * @return 结果
     */
    Integer updateArchiveById(@Param("archivedStatus") String archivedStatus, @Param("archivedDate") Date archivedDate, @Param("examId") String examId, @Param("id") String id);

    /**
     * 更新公务员考生归档状态（多ID操作）
     * @param archivedStatus 归档状态
     * @param archivedDate 归档时间
     * @param ids 考生ID
     * @return 结果
     */
    Integer updateArchiveByIds(@Param("archivedStatus") String archivedStatus, @Param("archivedDate") Date archivedDate, @Param("examId") String examId, @Param("ids") String[] ids);

    /**
     * 根据Id获取interviewVo
     */
    List<InterviewVo> getCrossLineList(@Param("list") List<String> ids);

    /**
     * 获取面试考生成绩信息列表
     * @param examScoreLineReq
     * @return
     */
    List<InterviewRank> queryRankGradeList(ExamScoreLineReq examScoreLineReq);

    /**
     * 获得历史考试名称列表
     * @param historyExamReq
     * @return
     */
    List<HistoryScoreLineVo> getHistoryExamNameList(HistoryExamReq historyExamReq);

    /**
     * 获取职位历年分数线
     * @param examScoreLineReq
     * @param year
     * @return
     */
    HistoryScoreLineVo getHistoryPostScoreLine(@Param("item") ExamScoreLineReq examScoreLineReq , @Param("year")String year);
}


